home *** CD-ROM | disk | FTP | other *** search
- // this function verifies disk space in kilobytes
- function verifyDiskSpace(dirPath, spaceRequired)
- {
- var spaceAvailable;
-
- // Get the available disk space on the given path
- spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
-
- // Convert the available disk space into kilobytes
- spaceAvailable = parseInt(spaceAvailable / 1024);
-
- // do the verification
- if(spaceAvailable < spaceRequired)
- {
- logComment("Insufficient disk space: " + dirPath);
- logComment(" required : " + spaceRequired + " K");
- logComment(" available: " + spaceAvailable + " K");
- return(false);
- }
-
- return(true);
- }
-
- // this function deletes a file if it exists
- function deleteThisFile(dirKey, file)
- {
- var fFileToDelete;
-
- fFileToDelete = getFolder(dirKey, file);
- logComment("File to delete: " + fFileToDelete);
- if(File.isFile(fFileToDelete))
- {
- File.remove(fFileToDelete);
- return(true);
- }
- else
- return(false);
- }
-
- // this function deletes a folder if it exists
- function deleteThisFolder(dirKey, folder, recursiveDelete)
- {
- var fToDelete;
-
- if(typeof recursiveDelete == "undefined")
- recursiveDelete = true;
-
- fToDelete = getFolder(dirKey, folder);
- logComment("folder to delete: " + fToDelete);
- if(File.isDirectory(fToDelete))
- {
- File.dirRemove(fToDelete, recursiveDelete);
- return(true);
- }
- else
- return(false);
- }
-
- // OS type detection
- // which platform?
- function getPlatform()
- {
- var platformStr;
- var platformNode;
-
- if('platform' in Install)
- {
- platformStr = new String(Install.platform);
-
- if (!platformStr.search(/^Macintosh/))
- platformNode = 'mac';
- else if (!platformStr.search(/^Win/))
- platformNode = 'win';
- else
- platformNode = 'unix';
- }
- else
- {
- var fOSMac = getFolder("Mac System");
- var fOSWin = getFolder("Win System");
-
- logComment("fOSMac: " + fOSMac);
- logComment("fOSWin: " + fOSWin);
-
- if(fOSMac != null)
- platformNode = 'mac';
- else if(fOSWin != null)
- platformNode = 'win';
- else
- platformNode = 'unix';
- }
-
- return platformNode;
- }
-
- function IsRestrictedAccess()
- {
- /* This will check to see if the user has restricted access or not.
- * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable. If
- * it is, then access is not restricted. This is only used to
- * determine which Desktop, Programs, and Start Menu folders
- * are to used: common or per user
- *
- * Requirement: The global variable "gWinReg" is assumed to be set already and
- * and to be pointing to the Windows Registry
- */
-
- var ikwDefined;
-
- ikwDefined = typeof(gWinReg.isKeyWritable);
- logComment("gWinReg.isKeyWritable(): " + ikwDefined);
- if(ikwDefined == "function")
- {
- gWinReg.setRootKey(gWinReg.HKEY_LOCAL_MACHINE);
- if(!gWinReg.isKeyWritable("SOFTWARE"))
- return true;
- }
-
- return false;
- }
-
- function IsWinnt()
- {
- /* Determines if the script is running under NT or not.
- *
- * Requirement: The global variable "gWinReg" is assumed to be set already and
- * and to be pointing to the Windows Registry
- */
- var subkey;
- var valname;
- var szCurrentVersion;
-
- gWinReg.setRootKey(gWinReg.HKEY_LOCAL_MACHINE);
- subkey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
- valname = "CurrentVersion";
- szCurrentVersion = gWinReg.getValueString(subkey, valname);
- logComment("szCurrentVersion: " + szCurrentVersion);
- if((szCurrentVersion == "") || (szCurrentVersion == null))
- {
- return false;
- }
- else
- {
- return true;
- }
- }
-
- function createShortcuts()
- {
- var subkey;
- var valname;
- var szStartMenuPrograms;
- var szFolderDesktop;
- var szFolderSendTo;
- var szFolderAppData;
- var fWindows;
- var fTemp;
- var fProgram;
- var fDefShortcuts;
- var fileExe;
- var fileNimIcon;
- var scNimDesc;
- var scNimParam;
- var scFolderName;
- var fFolderDesktop;
- var fFolderPath;
- var fFolderPathStr;
- var szCurrentVersion;
- var bTurboSet;
-
- fWindows = getFolder("Windows");
- fProgram = getFolder("Program");
- fDefShortcuts = getFolder("Program","defaults/shortcuts");
- fTemp = fProgram + "Netscp.exe";
- fileExe = getFolder("Program", "Netscp.exe");
- fileNimIcon = getFolder("Chrome", "icons/default/AimApplication.ico");
- scNimDesc = "Instant Messenger";
- scNimParam = "-aim";
- scFolderName = "Netscape 7.0";
- if(gWinReg != null)
- {
-
- if(!gIsWinnt || gRestrictedAccess)
- {
- gWinReg.setRootKey(gWinReg.HKEY_CURRENT_USER);
- subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
- valname = "Programs";
- szStartMenuPrograms = gWinReg.getValueString(subkey, valname);
- valname = "Desktop";
- szFolderDesktop = gWinReg.getValueString(subkey, valname);
- }
- else
- {
- gWinReg.setRootKey(gWinReg.HKEY_LOCAL_MACHINE);
- subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
- valname = "Common Programs";
- szStartMenuPrograms = gWinReg.getValueString(subkey, valname);
- valname = "Common Desktop";
- szFolderDesktop = gWinReg.getValueString(subkey, valname);
- }
-
- gWinReg.setRootKey(gWinReg.HKEY_CURRENT_USER);
- subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
- valname = "SendTo";
- szFolderSendTo = gWinReg.getValueString(subkey, valname);
-
- subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
- valname = "AppData";
- szFolderAppData = gWinReg.getValueString(subkey, valname);
-
- subkey = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)\\Main";
- valname = "Program Folder Path";
- fFolderPathStr = gWinReg.getValueString(subkey, valname);
- if((fFolderPathStr == "") || (fFolderPathStr == null))
- {
- fTemp = szStartMenuPrograms + "\\" + scFolderName;
- fFolderPath = getFolder("file:///", fTemp);
- }
- else
- {
- /* convert the path string to a path folder object */
- fFolderPath = getFolder("file:///", fFolderPathStr);
- }
- /* convert the path string to a path folder object */
- fFolderDesktop = getFolder("file:///", szFolderDesktop);
-
- logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
- logComment("Folder FolderDesktop : " + szFolderDesktop);
- logComment("Folder FolderSendTo : " + szFolderSendTo);
- logComment("fileExe : " + fileExe);
- logComment("fFolderPath : " + fFolderPath);
- logComment("fProgram : " + fProgram);
-
- /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
- * This is so that the folder creation gets logged for uninstall to remove it. */
- if(!File.exists(fFolderPath))
- File.dirCreate(fFolderPath);
-
- if(!File.exists(fDefShortcuts))
- File.dirCreate(fDefShortcuts);
-
- /* create the shortcuts */
- File.windowsShortcut(fileExe, fFolderDesktop, scNimDesc, fProgram, scNimParam, fileNimIcon, 0);
- File.windowsShortcut(fileExe, fDefShortcuts, scNimDesc, fProgram, scNimParam, fileNimIcon, 0);
- File.windowsShortcut(fileExe, fFolderPath, scNimDesc, fProgram, scNimParam, fileNimIcon, 0);
-
- // Register as a windows XP messenger
- if( gIsWinnt ) // find a way to see if it is only WINXP
- {
- gWinReg.setRootKey(gWinReg.HKEY_LOCAL_MACHINE);
-
- gWinReg.createKey("Software\\Clients\\IM\\Netscp.exe","");
-
- subkey = "Software\\Clients\\IM\\Netscp.exe";
- valname = "";
- data = "AOL Instant Messenger (Netscape 7.0)";
- gWinReg.setValueString(subkey, valname, data);
-
- subkey = "Software\\Clients\\IM\\Netscp.exe\\DefaultIcon";
- gWinReg.createKey(subkey,"");
- valname = "";
- data = fProgram + "chrome\\icons\\default\\AimApp.ico,0"
- gWinReg.setValueString(subkey, valname, data);
-
- gWinReg.createKey("Software\\Clients\\IM\\Netscp.exe\\InstallInfo","");
-
- subkey = "Software\\Clients\\IM\\Netscp.exe\\InstallInfo";
- valname = "HideIconsCommand";
- data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.02 (en)\" /hs aim";
- gWinReg.setValueString(subkey, valname, data);
-
- subkey = "Software\\Clients\\IM\\Netscp.exe\\InstallInfo";
- valname = "IconsVisible";
- gWinReg.setValueNumber(subkey, valname, 1);
-
- subkey = "Software\\Clients\\IM\\Netscp.exe\\InstallInfo";
- valname = "ReinstallCommand";
- data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.02 (en)\" /sd IM";
- gWinReg.setValueString(subkey, valname, data);
-
- subkey = "Software\\Clients\\IM\\Netscp.exe\\InstallInfo";
- valname = "ShowIconsCommand";
- data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.02 (en)\" /ss aim";
- gWinReg.setValueString(subkey, valname, data);
- }
- }
- else
- {
- logComment("gWinReg is null");
- }
- }
-
- function upgradeCleanup()
- {
- // Obsolete files from previous Netscape installations that
- // need to be cleaned up.
- deleteThisFile("Program", "Cool/CoolUtils.dll");
- }
-
- // main
- var srDest;
- var err;
- var communicatorFolder;
- var gWinReg;
- var gIsWinnt;
- var gRestrictedAccess;
-
-
- srDest = 1761;
- err = initInstall("Netscape Instant Messenger", "Netscape/Instant Messenger", "7.0.2.2003020809");
- logComment("initInstall: " + err);
-
- communicatorFolder = getFolder("Program");
- logComment("communicatorFolder: " + communicatorFolder);
-
- if(verifyDiskSpace(communicatorFolder, srDest))
- {
- setPackageFolder(communicatorFolder);
-
- target = getFolder("Program", "Xpcs Registry.dat");
- if (File.exists(target) > 0)
- {
- var rmErr = File.remove(target);
- logComment("File.remove of " + target + " returned: " + rmErr);
- }
-
- upgradeCleanup();
- err = addDirectory("",
- "7.0.2.2003020809",
- "bin", // dir name in jar to extract
- communicatorFolder, // Where to put this file (Returned from getFolder)
- "", // subdir name to create relative to communicatorFolder
- true ); // Force Flag
- logComment("addDirectory() returned: " + err);
-
- gWinReg = getWinRegistry();
- if(gWinReg && (err == SUCCESS))
- {
- // The functions within this if loop all depend upon the global variables
- // gWinReg, gRestrictedaccess and gIsWinnt being set correctly.
-
- gRestrictedAccess = IsRestrictedAccess();
- logComment("gRestrictedAccess value: " + gRestrictedAccess);
- gIsWinnt = IsWinnt();
- logComment("gIsWinnt value: " + gIsWinnt);
-
- createShortcuts();
-
- resetError();
- }
- else
- {
- logComment("gWinReg is null");
- }
-
- registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","aim.jar"),"content/aim/");
- registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","aim.jar"),"content/aim-region/");
-
- // check return value
- err = getLastError();
- if(!err)
- {
- err = performInstall();
- logComment("performInstall() returned: " + err);
- }
- else
- cancelInstall(err);
- }
- else
- cancelInstall(INSUFFICIENT_DISK_SPACE);
-
- // end main
-